package com.zhipu.balance

import android.app.Application
import android.content.Context
import androidx.multidex.MultiDex
import com.zhipu.balance.utils.InitializeUtils.initDefaultMaker
import com.zhipu.balance.utils.InitializeUtils.initLogUtils
import com.zhipu.balance.utils.InitializeUtils.initSign
import com.zhipu.balance.utils.InitializeUtils.initiRetrofit2
import com.zhipu.balance.utils.InitializeUtils.initializeDBFlow
import com.zhipu.balance.utils.InitializeUtils.initializingSerialPort
import com.zhipu.balance.utils.InitializeUtils.setMBaseApplication


/**
 *                             _ooOoo_
 *                            o8888888o
 *                            88" . "88
 *                            (| -_- |)
 *                            O\  =  /O
 *                         ____/`---'\____
 *                       .'  \\|     |//  `.
 *                      /  \\|||  :  |||//  \
 *                     /  _||||| -:- |||||-  \
 *                     |   | \\\  -  /// |   |
 *                     | \_|  ''\---/''  |   |
 *                     \  .-\__  `-`  ___/-. /
 *                   ___`. .'  /--.--\  `. . __
 *                ."" '<  `.___\_<|>_/___.'  >'"".
 *               | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *               \  \ `-.   \_ __\ /__ _/   .-` /  /
 *          ======`-.____`-.___\_____/___.-`____.-'======
 *                             `=---='
 *          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 *                     佛祖保佑        永无BUG
 *            佛曰:
 *                   写字楼里写字间，写字间里程序员；
 *                   程序人员写程序，又拿程序换酒钱。
 *                   酒醒只在网上坐，酒醉还来网下眠；
 *                   酒醉酒醒日复日，网上网下年复年。
 *                   但愿老死电脑间，不愿鞠躬老板前；
 *                   奔驰宝马贵者趣，公交自行程序员。
 *                   别人笑我忒疯癫，我笑自己命太贱；
 *                   不见满街漂亮妹，哪个归得程序员？
 */
class BaseApplication : Application(){

    override fun onCreate() {
        super.onCreate()

        /**
         * 上下文
         */
        setMBaseApplication(this)
        /**
         * Toast设置统一样式
         */
        initDefaultMaker()
        /**
         * 初始化DBFlow
         */
        initializeDBFlow(this)
        /**
         * 日志相关
         */
        initLogUtils()
        /**
         *  初始化串口
         */
        initializingSerialPort()
        /**
         * Retrofit2
         */
        initiRetrofit2(this)
        /**
         *  初始化签名
         */
        initSign(this)
    }


    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        MultiDex.install(this);
    }
}